home *** CD-ROM | disk | FTP | other *** search
-
- Windows 95 + Windows 3.x + Linux Howto
- Robert Goodwin <Robert.Goodwin@mcc.ac.uk>
- August 1996
-
- 0. Introduction
-
- This document was originally written in Jan96. I have incorporated
- various comments, information, and questions received since then.
- This document is also avilable in Japanese; see the collection of
- Japanese linux docs at http://epsenewsc.gee.kyoto-u.ac.jp/JF/JF.html
-
- 1. Booting Multiple Operating Systems
-
- If you want to boot multiple operating systems (and you don't want
- to have to boot them from floppy disk!), you need to use some
- sort of BOOT MANAGER.
-
- Win95 doesn't really *have* a boot manager - it has boot options,
- but in my book a "boot manager" can be configured to boot anything.
-
- Lilo can be configured to boot almost anything, as can the OS/2
- boot manager and the Windows NT boot manager. Which of these you
- use is really up to you; it depends what you want on your system.
- If you use the OS/2 manager, for example, it "hides" the "other"
- DOSsy partitions from you.
-
-
- 2. Other Places You Might Look
-
- If you just want Win95 and Linux, then you probably want the
- Win95+Linux Howto. The latest version can be found at:
-
- http://www.in.net/~jkatz/win95/Linux-HOWTO.html
-
- Win95 and Linux can be installed on a single drive; the problems
- covered in the rest of this document revolve around DOS not allowing
- more than ONE primary DOS partition per drive.
-
- If you want to use the NT boot manager, take a look at
- http://www.bcpl.lib.md.us/~dbryan/directboot.html
- To add Linux (or others, including OS/2), there's a nifty little
- program that makes boot sector files for use with the NT loader.
- You can find information about this at
- http://ourworld.compuserve.com/homepages/gvollant/othertl.htm
-
- You might also investigate LOADLIN.EXE which allows you to "boot"
- Linux by first booting into DOS.
-
-
- 3. Why this HOWTO?
-
- This document addresses the following issues:
-
- * How to get Win 3.x to live on the same machine as Win95 without
- problems (and what those problems might otherwise be)
- * How to avoid problems on a machine with Win95 which can also
- remote boot DOS
- * How to install Win95 with Linux without having to reinstall lilo
- (with the tedious booting of Linux from floppy)
-
- Although the Win95 filesystem lives on top of the standard DOS FAT,
- it does some pretty unpleasant things to it. Boot your Win95 machine
- from a bootable DOS floppy and get Norton to check the disk (but
- DON'T let it attempt any repairs or you'll mess up some "long"
- filenames)
-
- I am currently required to support applications in the Win95
- environment as well as under Win3.x (both run locally and network
- booted). I developed the setup described in this document to allow me
- to do all this with just one PC.
-
- Don't ask how a Unix person ended up in this position :-)
-
-
- 4. Requirements
-
- If you are prepared to tinker with the source to lilo (lilo 1.7
- or later, I belive), it is possible to do all this with ONE
- hard disk. This works by changing the contents of the partition
- table as the system boots; if you don't feel confident about trying
- this, then don't!
-
- Otherwise, you will need TWO hard disks. This is due to some
- DOS/Windows limitations with respect to booting and allocation of
- drive letters. Believe me, I tried to get it working with one.
- (but I didn't want to mess with the lilo source)
-
-
- 5. What you will end up with
-
- A word on device names. I have seen systems which use /dev/hdc for
- the 3rd IDE disk (first IDE disk on secondary controller) and
- /dev/hdd for the fourth. I've also seen systems which use /dev/hd1a
- and /dev/hd1b (giving such partitions as /dev/hd1a3 etc). My system
- uses this second naming style, but I have changed to names to
- /dev/hdc and /dev/hdd to minimise confusion.
-
- Here is a brief description of what I now have - watch those drive
- letters because they change...
-
- If you use a secondary IDE controller, you may need to create the
- /dev entries yourself (/dev/hdcd* and /dev/hdd*) This might be the
- case if you add a second hard drive to a machine with one IDE disk
- and an IDE CDROM already installed; your second hard disk would be
- /dev/hdc. I have tried this arrangement with no problems.
-
- I have: /dev/hda - first hard disk
- /dev/hdb - cd-rom drive
- /dev/hdc - second hard disk
-
- Option 1:
- On powering up the machine, I can allow the boot ROM on the
- ethernet card to remote boot DOS. The "C" drive is the first DOS
- partition on the FIRST IDE disk (in my case /dev/hda1). The "D"
- drive is the first DOS partition on the SECOND IDE disk (in my
- case /dev/hdc1), and the "E" drive is the second DOS partition on
- the SECOND IDE disk (/dev/hdc2). The CD-ROM becomes F:
-
- Option 2:
- Allow lilo to boot the default system (Linux, naturally)
-
- Option 3:
- Interrupt lilo and ask for an option I call DOS. This boots DOS
- from /dev/hda1, and, as with option 1, the "C" drive is /dev/hda1
- the "D" drive is /dev/hdc1 and the "E" drive is /dev/hdc2. The
- CD-ROM becomes F:
-
- Option 4:
- Interrupt lilo and ask for an option I call Win95. This boots
- Win95 from the first DOS partition on the SECOND IDE drive (in
- my case /dev/hdc1). Follow this carefully: the "C" drive is now
- the first DOS partition on the SECOND IDE disk (/dev/hdc1),
- the "D" drive is now the first DOS partition on the FIRST IDE
- disk (/dev/hda1), and the "E" drive remains the second DOS
- partition on the SECOND IDE disk (/dev/hdc2). The CD-ROM
- becomes F:
-
- Notice that the C drive changes depending how you boot. This means
- that when you install Win95, you install it to C:\WINDOWS, and when
- you install Win3.x, you install it to C:\WINDOWS but this isn't the
- same place :-)
-
- Also notice that the third DOS partition (which I use as a general
- data drive) is E: whichever way you boot, and that the CD-ROM
- stays constant too.
-
-
- 6. How to do it
-
- First of all, install Linux; it does not matter which drive you
- install it on; but since you are using two drives it makes sense to
- create a swap partition on each.
-
- Create a primary DOS partition on the second disk. Unfortunately, the
- DOS FDISK won't let you do this, so you must use the Linux fdisk to
- create the partition, set the type (6 for DOS 16 BIT FAT > 32Mb), set
- the partition as bootable, and CAREFULLY follow the advice on the man
- page for fdisk. This describes how to persuade DOS to recognise a
- partition created in this manner using the dd command to zero the
- first 512 bytes of the partition. (Basically, you use
- "dd if=/dev/zero of=/dev/XXXX bs=512 count=1" where XXXX is the
- device but be VERY careful since this is a good way to trash a disk
- - for example by putting /dev/hda instead of /dev/hda1!)
-
- Creating the primary DOS partition on the first hard disk can be done
- with the DOS FDISK. Any other required DOS partitions can similarly
- be created.
-
- Both of these primary partitions must be formatted as bootable DOS
- partitions; use FORMAT C: /S and FORMAT D: /S having booted from a
- floppy. In order to avoid confusion, give the partitions meaningful
- volume labels!
-
- Edit /etc/lilo.conf to give you the option of booting from either
- of the two primary DOS partitions. I have appended an example
- to the end of this document. Note the use of the "loader" line in
- this example file. Which you choose to install as Win95 and which
- as DOS/Win3.x is up to you; I used the second hard disk for Win95
- since network booting of the machine then gives the normal DOS
- drive as "C". Also (and usefully), installing Win95 on the second
- hard disk avoids having to boot linux from a recovery disk and
- re-install lilo (why this should be is explained below). Remember
- to run lilo to install the options.
-
- If you are (sensibly) planning to install Win95 from CDROM, you
- will need to include the relevant drivers on the Win95 partition
- such that when you boot from it, the CDROM drive will be accessible.
-
- Now boot, using lilo, from the drive you wish to use for DOS/Win3.x
- and install the rest of DOS and Win3.x - the Windows installation
- should go to the C:\WINDOWS directory as per default.
-
- Once this is done, reboot the machine and, using lilo, boot from the
- Win95 partition. Perform your Win95 installation. The installation
- procedure may suggest D:\WINDOWS for installing Win95 because it
- searches the machine for existing WINDOWS versions - DON'T accept
- this - install Win95 to C:\WINDOWS.
-
- Now for the neat part! Win95 is a rather arrogant system - when you
- install it, it assumes that it is the only operating system on the
- machine and proceeds to write its own MBR (Master Boot Record) to
- the hard disk. This is why you generally need to re-install lilo.
- If you have installed Win95 to the second hard disk, you have done
- something which the Microsoft(tm) programmers didn't consider.
- On one machine where I performed this operation, Win95 wrote its
- replacement MBR to the MBR of the SECOND hard disk. On another, I
- never found any evidence of it at all. The practical upshot of this
- is that the MBR which matters, that of the first hard disk, is
- not disturbed. Thus when you reboot the machine, you will be greeted
- by the friendly and familiar LILO prompt.
-
- Example Partition List:
- /dev/hda1 * DOS partition (C: or D: depending upon boot)
- /dev/hda2 Extended partition
- /dev/hda5 /
- /dev/hda6 swap
- /dev/hda7 /home
-
- /dev/hdc1 * Win95 partition (C: or D: depending upon boot)
- /dev/hdc2 DOS partition (E: always)
- /dev/hdc3 swap
-
- (Partitions with a * are set as bootable (or "active") by fdisk)
-
- Example lilo.conf:
- # /etc/lilo.conf
- install = /boot/boot.b
- compact
- delay = 20 # optional, for systems that boot very quickly
- #prompt # use instead of delay to force response to boot prompt
- #vga = normal # force sane state
- #ramdisk = 0 # paranoia setting
- #root = current # use "current" root
- boot = /dev/hda
- image = /boot/vmlinuz
- read-only
- label = linux
- other = /dev/hdc1
- label = win95
- loader= /boot/any_d.b
- other = /dev/hda1
- table = /dev/hda
- label = dos
- image = /boot/vmlinuz.old
- label = linux.old
- optional
- read-only
-
-
-
- 7. Some Questions and Answers
-
- Q: Does this scheme work for SCSI disks?
- A: I have been told that this works, but have not been able to try it
- for myself
-
- Q: Does this scheme work if Linux is wholly on one disk, and DOS and
- Win 95 are partitions of the other?
- A: No - the DOS and Win95 bits both have to be the primary "DOS"
- partition of a disk. It is possible to get round this by
- recompiling LILO
-
- Q: I have downloaded a Win95 FAQ which speaks of the ability to boot
- between DOS and Win95. If I install Win3.11 in a different directory
- from "windows" it says I can run Win95 and Win3.11 in harmony. This
- is one partition.
- A: Yes, this can be done. It may cause problems however. Win95 does
- some nasty things to the FAT drive and some operations you perform
- under your old DOS and old windows (3.x) can easily destroy the
- long-filename information. For example, defragmenting the drive using
- a DOS/Win3.x utility will do this. You are also introducing
- difficulties for yourself when things don't work; you have to worry
- about the INI files under each system *and* the win95 registry.
-
- Q: Does LBA matter?
- A: Yes. Ugh!
- BIOS's after approx 1994 support LBA to get around a limit somewhere
- inside DOS which prevents DOS from being able to cope with cylinder
- numbers > 1024. (This is covered in much greater detail in PC hardware
- FAQs). LBA fiddles the disk geometry, multiplying the number of heads
- by 2 or 4 (etc) in order to divide the aparent number of cylinders by
- 2 or 4 (etc) to a number < 1024. This works around this limit.
-
- Linux can handle cylinders > 1024 (provided that the partition from
- which you boot is wholly below 1024 cylinders), so can handle large
- (>504Mb) disks even on old machines (pre-1994 BIOS). It can also
- handle large disks on BIOS's which do support LBA, whether or not
- LBA is enabled.
-
- It is vital that ALL the OS's view each disk as having the same
- geometry - this is because the numbers in the partition table are
- "perceived" cylinder numbers, not the actual ones. Therefore, changing
- the BIOS setting to activate LBA will invalidate the existing contents
- of a disk.
-
- If your linux system does not "see" the "correct" geometry (that is,
- the same that DOS "sees"), you will need to add a line to lilo.conf
- append="hd=x,y,z" where x,y,z represent the disk geometry (see the
- relevant man pages).
-
- Q: My BIOS only holds information on two HDDs, not four. Does this
- matter?
- A: Maybe! Having 4 HDDs with old BIOS's under DOS required the use of
- driver software. Newer BIOS's hold information on 4 HDDs.
-
- Linux can happily use 4 HDDs even with most of these older BIOS's,
- but if you put a DOS partition on disk 3 you will only be able to
- access it via linux.
-
- This is relevant since many machines have an IDE drive, an IDE
- CD-ROM and, if you want to implement this document, another IDE
- drive too.
-
-
-
- If you have found this document useful, please let me know.
-
-